As it is generally known, in the technical area of computer systems, a database is a collection of information that is represented and stored electronically, and that is organized so that it can easily be accessed, managed, and updated using a computer program. Databases can be used to store any specific type of information. Database management system (DBMS) software is often used to enable a user or software process to enter, organize, and select data in a database. DBMS software provides the capabilities of controlling read/write access, specifying report generation, and analyzing usage. Databases and DBMS software are used in many specific types of computer systems, including large mainframe systems, as well as smaller, distributed workstation, mid-range, and personal computer systems.
SQL (Structured Query Language) is a standard language for specifying interactive database queries. Examples of existing database systems that may be accessed using SQL include IBM's DB2, Microsoft's Access, database products from Oracle, Sybase, and Computer Associates, and others.
Database technologies may be classified according to their approach to organizing the information they store. The most prevalent approach is the relational database, a tabular structure in which the stored data can be reorganized and accessed in various ways. Using a relational database, information may be linked together as required for a specific operation or application. In contrast, non-relational systems use links between portions of the stored information that are fixed, and/or embedded in the information itself.
Relational databases use tables (also referred to as files) to organize related information using rows and columns of the tables. Each row (also referred to as a record, document, or entry) in a table is a group of fields that are relevant to a specific entity. Each field within a row stores a separate piece of data. For example, a relational database for a business might contain a table for customer contact information, in which each row is associated with a customer, and each field contains data such as: customer account number, customer name, street address, city, telephone number and so on. A column within a table consists of all the values in a single field of the table, across all the rows of the table, such as all the telephone numbers of all the customers. Accordingly, in the customer contact information table example, the customers' account numbers, names, addresses, phone numbers, and so on, are stored as a series of columns in the table.
During operation of a relational database, relationships are created by comparing data field values, such as account numbers, names, etc. For example, through a command such as the SQL Join command, a relational database system has the flexibility to take any two or more tables and generate an output based on field values that meet a matching criteria. For example, a customer table and an order table can be used to process a query relating information in both files, such as a request for the names of customers that purchased a particular product.
Existing relational databases have a significant shortcoming, in that they do not provide a mechanism for tracking which table rows have been read, and which have not been read, by each particular user of the database. Software systems outside the area of relational databases, such as the Domino messaging and collaboration system provided by International Business Machines (IBM), have included mechanisms for tracking which documents have been read by individual users. However, such capabilities have as of yet not been available within relational database systems themselves.
Application specific solutions to this problem could be provided external to, or layered on top of underlying database systems. However, such an approach would be unacceptable for a number of reasons. First, consistent integration points would be difficult to implement. Second, application control would require application specific coding for every table. And third, the system could be bypassed at the database level, making it less than fully reliable.
Accordingly, there is a need for a new system that provides per-user, per-row read/unread tracking in a relational database system. The system should be convenient to implement, and not require excessive resources during operation. The new system should further provide consistent integration points, application control without re-coding for every table and application, and full reliability down through the database layer.